The computing industry, over time, has experienced a rapid growth and evolution. Not only have technological advancements led to new models of computing devices, but they have also led to developments in the systems and networks in which the computing devices operate and interact. Each new model of computing device, from mainframes and supercomputers to personal computers and mobile devices, has brought its own share of advantages as well as challenges.
Over the past several decades, computing has been transitioning from distributed systems (e.g. mainframes) to decentralized systems (e.g. personal computers). While the new decentralized, client-oriented personal computer model provided enhanced flexibility and convenience to users, it also resulted in inefficient usage of resources and unnecessary additional costs. For example, each personal computer required the processing power and storage capacity necessary for maximum, rather than typical, loads. As a result, the recent trend in computing has been to a centralized model where applications and data can be centrally managed, stored, and provisioned for the purpose of reducing costs and improving security and efficiency.
One emerging model, known as “the cloud,” relies on the delivery of computing resources via a distributed computer network. In such a model, one or more “servers” in the cloud provide services to one or more distributed “clients.” Services provided by the cloud may range from individual software applications to the full functionality of an operating system. Current cloud systems typically rely on input and requests from the client to guide a session. In keeping with the client-server paradigm, these requests are often made by a browser interface, which typically operates on a “pull” model whereby a cloud server provides information for display only in response to an explicit request from a client operating the browser. The request momentarily opens a connection with the server, which is typically closed shortly after the server serves the requested information. As a result, the cloud server providing the various services to the client may have a limited ability to independently direct the session.
Therefore, a need exists in the art for an agent in a centralized computing system that keeps alive a connection between the server and the client allowing the server to push information and commands to help control a session with the client.